module TablesHelper
  def query_statistics(dine)
    event = dine.event
    user_groups=event.users.find(:all,:select=>'form,count(form) as count',:group=>'form')
    user_hash={}
    user_groups.each do |user_group|
      user_hash[user_group.form]=event.users.find(:all,:conditions=>"form='#{user_group.form}'")-get_top_table_users(dine)
    end
    user_hash
  end

  #获取附桌预分配的单位集合
  def get_normal_table_froms(dine)
    tables = dine.normal_tables
    froms=[]
    tables.each do |table|
      if table.froms
        froms+=table.froms.split(',')
      end
    end
    froms
  end

  #获取所有主桌的就餐人员列表
  def get_top_table_users(dine)
    get_users_by_tables(dine.top_tables)
  end
  #获取所有附桌的就餐人员列表
  def get_normal_table_users(dine)
    get_users_by_tables(dine.normal_tables)
  end
  #根据餐桌列表获取就餐的人员列表
  def get_users_by_tables(tables)
    users=[]
    tables.each do |table|
      users+=table.users
    end
    users
  end

  #移除用户
  def remove_user_by_table(table_id,user_id)
    table = Table.find(table_id)
    users = table.eaters.split(',')
    if users.index(user_id)
      users.delete(user_id)
    end
    table.eaters = users.join(',')
    table.save
    table
  end
  #添加用户到餐桌
  def add_user_2_table(current_table,user_id)
    arr=[]
    if current_table.eaters
      arr = current_table.eaters.split(',')
    end
    unless arr.index(user_id)
      arr << user_id
    end
    current_table.eaters = arr.join(',')
    current_table.save
    current_table
  end
  #移除用户到待分配列表
  def remove_user_to_pending(table_id,user_id)
    remove_user_by_table(table_id,user_id)
    user = User.find(user_id)
    render :update do |page|
      page.remove("#{table_id}_user_#{user_id}")
      page.insert_html :bottom,'pending_users',:partial=>'top_tables/pending_user',:locals=>{:user=>user}
    end
  end
  #分配用户到指定的餐桌
  def allocation_user_2_table(user_id,table_id,current_table_id)
    user = User.find(user_id)
    current_table=Table.find(current_table_id)

    if table_id>0 && (table_id!=current_table.id)
      remove_user_by_table(table_id,user_id)
    end

    add_user_2_table(current_table,user_id)

    render :update do |page|
      if table_id>0
        page.remove("#{table_id}_user_#{user.id}")
      else
        page.remove("user_#{user.id}");
      end
      page.insert_html :bottom,"table_#{current_table.id}_users",:partial=>'top_tables/table_user',:locals=>{:table=>current_table,:user=>user}
    end
  end
end
